Prepare a single data
set
- Life expectancy and income for the year 2015.
#Read data.
data0 <- read.csv ("/Users/qianshengliang/Dropbox/STA553/Week 6/LifeExpIncom.csv",
header=TRUE,sep=",", colClasses=c("NULL", NA, NA,NA,NA,NA,NA))
#DT::datatable(data0, fillContainer = FALSE, options = list(pageLength = 10))
#2015data
year.id=which(data0$year=="2015")
data2015 = data0[year.id,]
#range(data2015$pop) #11000 - 1400000000
#range(data2015$income) #623 - 120000
#range(data2015$lifeExp,na.rm=TRUE) #49.6 -83.8
#work data
data1 <- data2015
data1$pop2 <- (log(data2015$pop)-9)
#range(data1$pop2) #0.3-12
#write.csv (data2015, "/Users/qianshengliang/Dropbox/STA553/Week 6/data2015.csv")
DT::datatable(data2015, fillContainer = FALSE, options = list(pageLength = 10))
Make an interactive
scatter plot
To display the association between life expectancy and income for the
year 2015.
plot_ly(
data = data1,
x = ~income, # Horizontal axis
y = ~lifeExp, # Vertical axis
color = ~factor(country),
text = ~paste("<br>Country: ", country,
"</br>Population: ", pop,
"</br>Income: ", income,
"</br>lifeExp: ", lifeExp),
hoverinfo = "text",
alpha = 0.2,
marker = list(size = ~(pop2), sizeref = 0.1, sizemode = 'area' ),
type = "scatter",
mode = "markers",
## graphic size
width = 900,
height = 700
) %>%
layout(
### Title
title =list(text = "Association between Income and Life Expectancy at 2015",
font = list(family = "Times New Roman", # HTML font family
size = 18,
color = "red")),
### legend
showlegend = FALSE,
## margin of the plot
margin = list(
b = 100,
l = 100,
t = 100,
r = 50
),
## Background
plot_bgcolor ='#f7f7f7',
## Axes labels
xaxis = list(
title=list(text = 'Income',
font = list(family = 'Arial')),
zerolinecolor = 'black',
zerolinewidth = 2,
gridcolor = 'white'),
yaxis = list(
title=list(text = 'Life Exoetancy',
font = list(family = 'Arial')),
zerolinecolor = 'purple',
zerolinewidth = 2,
gridcolor = 'white',
range=c(40,90)),
## annotations
annotations = list(
x = 0.8, # between 0 and 1. 0 = left, 1 = right
y = 42, # between 0 and 1, 0 = bottom, 1 = top
font = list(size = 12,
color = "darkred"),
text = "The point size is proportional to the population",
xref = "paper", # "container" spans the entire `width` of the
# lot. "paper" refers to the width of the
# plotting area only. yref = "paper",
# same as xref.
xanchor = "center", # horizontal alignment with respect to its x position
yanchor = "bottom", # similar to xanchor
showarrow = FALSE)
)
The graph shows the relation between income and life expectancy of
193 countries/regions in 2015. The size of the points is proportioned to
population and colors represent different contries.
LS0tCnRpdGxlOiAiSFc2IEludGVyYWN0aXZlIFBsb3RzIHdpdGggcGxvdGx5KCkiCmF1dGhvcjogIlEgTGlhbmciCmRhdGU6ICIzLzUvMjAyNCIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6IAogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogNAogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGZpZ193aWR0aDogNgogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMKICAgIHRvY19jb2xsYXBzZWQ6IHllcwogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMKICAgIHNtb290aF9zY3JvbGw6IHRydWUKICAgIHRoZW1lOiByZWFkYWJsZQogICAgZmlnX2hlaWdodDogNAotLS0KCmBgYHs9aHRtbH0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCmRpdiNUT0MgbGkgewogICAgbGlzdC1zdHlsZTpub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjpsaWdodGdyYXk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7CiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjowOwogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CiAgICBjb2xvcjogIzc4MGMwYzsKfQoKLyogbW91c2Ugb3ZlciBsaW5rICovCmRpdiNUT0MgYTpob3ZlciB7CiAgY29sb3I6IHJlZDsKfQoKLyogdW52aXNpdGVkIGxpbmsgKi8KZGl2I1RPQyBhOmxpbmsgewogIGNvbG9yOiBibHVlOwp9CgoKCmgxLnRpdGxlIHsKICBmb250LXNpemU6IDI0cHg7CiAgY29sb3I6IERhcmtibHVlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKICBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOwp9Cmg0LmF1dGhvciB7IAogICAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOwogIGNvbG9yOiBEYXJrUmVkOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQpoNC5kYXRlIHsgCiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOwogIGNvbG9yOiBEYXJrQmx1ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KaDEgewogICAgZm9udC1zaXplOiAyNHB4OwogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7CiAgICBjb2xvcjogZGFya3JlZDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQpoMiB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICAgIGNvbG9yOiBuYXZ5OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKaDMgeyAKICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOwogICAgY29sb3I6IG5hdnk7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9CgpoNCB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovCiAgICBmb250LXNpemU6IDE4cHg7CiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsKICAgIGNvbG9yOiBkYXJrcmVkOwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLyogdW52aXNpdGVkIGxpbmsgKi8KYTpsaW5rIHsKICBjb2xvcjogZ3JlZW47Cn0KCi8qIHZpc2l0ZWQgbGluayAqLwphOnZpc2l0ZWQgewogIGNvbG9yOiBncmVlbjsKfQoKLyogbW91c2Ugb3ZlciBsaW5rICovCmE6aG92ZXIgewogIGNvbG9yOiByZWQ7Cn0KCi8qIHNlbGVjdGVkIGxpbmsgKi8KYTphY3RpdmUgewogIGNvbG9yOiB5ZWxsb3c7Cn0KCjwvc3R5bGU+CmBgYApgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyBjb2RlIGNodW5rIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBSIGNvZGUsIHdhcm5pbmdzLCBhbmQgb3V0cHV0IAojIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIG91dHB1dCBmaWxlcy4Kb3B0aW9ucyhyZXBvcyA9IGxpc3QoQ1JBTj0iaHR0cDovL2NyYW4ucnN0dWRpby5jb20vIikpCmlmICghcmVxdWlyZSgidGlkeXZlcnNlIikpIHsKICAgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKICAgbGlicmFyeSh0aWR5dmVyc2UpCn0KaWYgKCFyZXF1aXJlKCJkcGx5ciIpKSB7CiAgIGluc3RhbGwucGFja2FnZXMoImRwbHlyIikKICAgbGlicmFyeShkcGx5cikKfQppZiAoIXJlcXVpcmUoImtuaXRyIikpIHsKICAgaW5zdGFsbC5wYWNrYWdlcygia25pdHIiKQogICBsaWJyYXJ5KGtuaXRyKQp9CmlmICghcmVxdWlyZSgiY293cGxvdCIpKSB7CiAgIGluc3RhbGwucGFja2FnZXMoImNvd3Bsb3QiKQogICBsaWJyYXJ5KGNvd3Bsb3QpCn0KaWYgKCFyZXF1aXJlKCJsYXRleDJleHAiKSkgewogICBpbnN0YWxsLnBhY2thZ2VzKCJsYXRleDJleHAiKQogICBsaWJyYXJ5KGxhdGV4MmV4cCkKfQppZiAoIXJlcXVpcmUoInBsb3RseSIpKSB7CiAgIGluc3RhbGwucGFja2FnZXMoInBsb3RseSIpCiAgIGxpYnJhcnkocGxvdGx5KQp9CmlmICghcmVxdWlyZSgiZ2FwbWluZGVyIikpIHsKICAgaW5zdGFsbC5wYWNrYWdlcygiZ2FwbWluZGVyIikKICAgbGlicmFyeShnYXBtaW5kZXIpCn0KaWYgKCFyZXF1aXJlKCJwbmciKSkgewogICAgaW5zdGFsbC5wYWNrYWdlcygicG5nIikgICAgICAgICAgICAgIyBJbnN0YWxsIHBuZyBwYWNrYWdlCiAgICBsaWJyYXJ5KCJwbmciKQp9CgogICAgICAgICAgICAgICMgSW5zdGFsbCBSQ3VybCBwYWNrYWdlCiAgICAKCmlmICghcmVxdWlyZSgiY29sb3VycGlja2VyIikpIHsKICAgIGluc3RhbGwucGFja2FnZXMoImNvbG91cnBpY2tlciIpICAgICAgICAgICAgICAKICAgIGxpYnJhcnkoImNvbG91cnBpY2tlciIpCn0KaWYgKCFyZXF1aXJlKCJnaWZza2kiKSkgewogICAgaW5zdGFsbC5wYWNrYWdlcygiZ2lmc2tpIikgICAgICAgICAgICAgIAogICAgbGlicmFyeSgiZ2lmc2tpIikKfQppZiAoIXJlcXVpcmUoIm1hZ2ljayIpKSB7CiAgICBpbnN0YWxsLnBhY2thZ2VzKCJtYWdpY2siKSAgICAgICAgICAgICAgCiAgICBsaWJyYXJ5KCJtYWdpY2siKQp9CmlmICghcmVxdWlyZSgiZ3JEZXZpY2VzIikpIHsKICAgIGluc3RhbGwucGFja2FnZXMoImdyRGV2aWNlcyIpICAgICAgICAgICAgICAKICAgIGxpYnJhcnkoImdyRGV2aWNlcyIpCn0KIyMjIGdncGxvdCBhbmQgZXh0ZW5zaW9ucwppZiAoIXJlcXVpcmUoImdncGxvdDIiKSkgewogICAgaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpICAgICAgICAgICAgICAKICAgIGxpYnJhcnkoImdncGxvdDIiKQp9CmlmICghcmVxdWlyZSgiZ2dhbmltYXRlIikpIHsKICAgIGluc3RhbGwucGFja2FnZXMoImdnYW5pbWF0ZSIpICAgICAgICAgICAgICAKICAgIGxpYnJhcnkoImdnYW5pbWF0ZSIpCn0KaWYgKCFyZXF1aXJlKCJnZ3JpZGdlcyIpKSB7CiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnZ3JpZGdlcyIpICAgICAgICAgICAgICAKICAgIGxpYnJhcnkoImdncmlkZ2VzIikKfQppZiAoIXJlcXVpcmUoImdyYXBoaWNzIikpIHsKICAgIGluc3RhbGwucGFja2FnZXMoImdyYXBoaWNzIikgICAgICAgICAgICAgIAogICAgbGlicmFyeSgiZ3JhcGhpY3MiKQp9Cgprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAgIAogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gVFJVRSwgICAKICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBOQSkKYGBgCgpcCgojIFByZXBhcmUgYSBzaW5nbGUgZGF0YSBzZXQKCjEuICBMaWZlIGV4cGVjdGFuY3kgYW5kIGluY29tZSBmb3IgdGhlIHllYXIgMjAxNS4gCgpgYGB7ciwgZmlnLmFsaWduPSdjZW50ZXInfQojUmVhZCBkYXRhLgpkYXRhMCA8LSByZWFkLmNzdiAoIi9Vc2Vycy9xaWFuc2hlbmdsaWFuZy9Ecm9wYm94L1NUQTU1My9XZWVrIDYvTGlmZUV4cEluY29tLmNzdiIsCiAgICAgICAgICAgICAgICAgICBoZWFkZXI9VFJVRSxzZXA9IiwiLCBjb2xDbGFzc2VzPWMoIk5VTEwiLCBOQSwgTkEsTkEsTkEsTkEsTkEpKQojRFQ6OmRhdGF0YWJsZShkYXRhMCwgZmlsbENvbnRhaW5lciA9IEZBTFNFLCBvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gMTApKQojMjAxNWRhdGEKeWVhci5pZD13aGljaChkYXRhMCR5ZWFyPT0iMjAxNSIpCmRhdGEyMDE1ID0gZGF0YTBbeWVhci5pZCxdCiNyYW5nZShkYXRhMjAxNSRwb3ApICMxMTAwMCAtIDE0MDAwMDAwMDAKI3JhbmdlKGRhdGEyMDE1JGluY29tZSkgIzYyMyAtIDEyMDAwMAojcmFuZ2UoZGF0YTIwMTUkbGlmZUV4cCxuYS5ybT1UUlVFKSAjNDkuNiAtODMuOAojd29yayBkYXRhCmRhdGExIDwtIGRhdGEyMDE1CmRhdGExJHBvcDIgPC0gKGxvZyhkYXRhMjAxNSRwb3ApLTkpCiNyYW5nZShkYXRhMSRwb3AyKSAjMC4zLTEyCiN3cml0ZS5jc3YgKGRhdGEyMDE1LCAiL1VzZXJzL3FpYW5zaGVuZ2xpYW5nL0Ryb3Bib3gvU1RBNTUzL1dlZWsgNi9kYXRhMjAxNS5jc3YiKQpEVDo6ZGF0YXRhYmxlKGRhdGEyMDE1LCBmaWxsQ29udGFpbmVyID0gRkFMU0UsIG9wdGlvbnMgPSBsaXN0KHBhZ2VMZW5ndGggPSAxMCkpCmBgYAoKIyBNYWtlIGFuIGludGVyYWN0aXZlIHNjYXR0ZXIgcGxvdCAKVG8gZGlzcGxheSB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiBsaWZlIGV4cGVjdGFuY3kgYW5kIGluY29tZSBmb3IgdGhlIHllYXIgMjAxNS4KCmBgYHtyLCBmaWcuYWxpZ249J2NlbnRlcid9CnBsb3RfbHkoCiAgZGF0YSA9IGRhdGExLAogIHggPSB+aW5jb21lLCAgIyBIb3Jpem9udGFsIGF4aXMgCiAgeSA9IH5saWZlRXhwLCAgICMgVmVydGljYWwgYXhpcyAKICBjb2xvciA9IH5mYWN0b3IoY291bnRyeSksICAKICB0ZXh0ID0gfnBhc3RlKCI8YnI+Q291bnRyeTogIiwgY291bnRyeSwKICAgICAgICAgICAgICAgICI8L2JyPlBvcHVsYXRpb246ICIsIHBvcCwKICAgICAgICAgICAgICAgICI8L2JyPkluY29tZTogIiwgaW5jb21lLAogICAgICAgICAgICAgICAgIjwvYnI+bGlmZUV4cDogIiwgbGlmZUV4cCksCiAgaG92ZXJpbmZvID0gInRleHQiLAogIGFscGhhICA9IDAuMiwKICBtYXJrZXIgPSBsaXN0KHNpemUgPSB+KHBvcDIpLCBzaXplcmVmID0gMC4xLCBzaXplbW9kZSA9ICdhcmVhJyApLAogIHR5cGUgPSAic2NhdHRlciIsCiAgbW9kZSA9ICJtYXJrZXJzIiwKICAjIyBncmFwaGljIHNpemUKICB3aWR0aCA9IDkwMCwKICBoZWlnaHQgPSA3MDAKKSAlPiUKICBsYXlvdXQoICAKICAgICMjIyBUaXRsZSAKICAgIHRpdGxlID1saXN0KHRleHQgPSAiQXNzb2NpYXRpb24gYmV0d2VlbiBJbmNvbWUgYW5kIExpZmUgRXhwZWN0YW5jeSBhdCAyMDE1IiwgCiAgICAgICAgICAgICAgICBmb250ID0gbGlzdChmYW1pbHkgPSAiVGltZXMgTmV3IFJvbWFuIiwgICMgSFRNTCBmb250IGZhbWlseSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMTgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICJyZWQiKSksIAogICAgIyMjIGxlZ2VuZAogICAgc2hvd2xlZ2VuZCA9IEZBTFNFLAogICAgIyMgbWFyZ2luIG9mIHRoZSBwbG90CiAgICBtYXJnaW4gPSBsaXN0KAogICAgICBiID0gMTAwLAogICAgICBsID0gMTAwLAogICAgICB0ID0gMTAwLAogICAgICByID0gNTAKICAgICksCiAgICAjIyBCYWNrZ3JvdW5kCiAgICBwbG90X2JnY29sb3IgPScjZjdmN2Y3JywgCiAgICAjIyBBeGVzIGxhYmVscwogICAgeGF4aXMgPSBsaXN0KCAKICAgICAgdGl0bGU9bGlzdCh0ZXh0ID0gJ0luY29tZScsCiAgICAgICAgICAgICAgICAgZm9udCA9IGxpc3QoZmFtaWx5ID0gJ0FyaWFsJykpLAogICAgICB6ZXJvbGluZWNvbG9yID0gJ2JsYWNrJywgCiAgICAgIHplcm9saW5ld2lkdGggPSAyLCAKICAgICAgZ3JpZGNvbG9yID0gJ3doaXRlJyksIAogICAgeWF4aXMgPSBsaXN0KCAKICAgICAgdGl0bGU9bGlzdCh0ZXh0ID0gJ0xpZmUgRXhvZXRhbmN5JywKICAgICAgICAgICAgICAgICBmb250ID0gbGlzdChmYW1pbHkgPSAnQXJpYWwnKSksCiAgICAgIHplcm9saW5lY29sb3IgPSAncHVycGxlJywgCiAgICAgIHplcm9saW5ld2lkdGggPSAyLCAKICAgICAgZ3JpZGNvbG9yID0gJ3doaXRlJywKICAgICAgcmFuZ2U9Yyg0MCw5MCkpLAogICAgIyMgYW5ub3RhdGlvbnMKICAgIGFubm90YXRpb25zID0gbGlzdCggIAogICAgICB4ID0gMC44LCAgICMgYmV0d2VlbiAwIGFuZCAxLiAwID0gbGVmdCwgMSA9IHJpZ2h0CiAgICAgIHkgPSA0MiwgICAjIGJldHdlZW4gMCBhbmQgMSwgMCA9IGJvdHRvbSwgMSA9IHRvcAogICAgICBmb250ID0gbGlzdChzaXplID0gMTIsCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImRhcmtyZWQiKSwgICAKICAgICAgdGV4dCA9ICJUaGUgcG9pbnQgc2l6ZSBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHBvcHVsYXRpb24iLCAgIAogICAgICB4cmVmID0gInBhcGVyIiwgICMgImNvbnRhaW5lciIgc3BhbnMgdGhlIGVudGlyZSBgd2lkdGhgIG9mIHRoZSAKICAgICAgIyAgbG90LiAicGFwZXIiIHJlZmVycyB0byB0aGUgd2lkdGggb2YgdGhlIAogICAgICAjICBwbG90dGluZyBhcmVhIG9ubHkuIHlyZWYgPSAicGFwZXIiLCAgCiAgICAgICMgIHNhbWUgYXMgeHJlZi4KICAgICAgeGFuY2hvciA9ICJjZW50ZXIiLCAjICBob3Jpem9udGFsIGFsaWdubWVudCB3aXRoIHJlc3BlY3QgdG8gaXRzIHggcG9zaXRpb24KICAgICAgeWFuY2hvciA9ICJib3R0b20iLCAjICBzaW1pbGFyIHRvIHhhbmNob3IgIAogICAgICBzaG93YXJyb3cgPSBGQUxTRSkKICApCmBgYAoKVGhlIGdyYXBoIHNob3dzIHRoZSByZWxhdGlvbiBiZXR3ZWVuIGluY29tZSBhbmQgbGlmZSBleHBlY3RhbmN5IG9mIDE5MyBjb3VudHJpZXMvcmVnaW9ucyBpbiAyMDE1LiBUaGUgc2l6ZSBvZiB0aGUgcG9pbnRzIGlzIHByb3BvcnRpb25lZCB0byBwb3B1bGF0aW9uIGFuZCBjb2xvcnMgcmVwcmVzZW50IGRpZmZlcmVudCBjb250cmllcy4g